跟前面的PCA有點像,PCA是找到互相垂直而variance最大的幾個維度,找到的其實是互相不相關的維度,而ICA的方法是找到互相獨立的維度。
這是一個廣泛被用於聲音辨識的機器學習演算法,最著名的問題是雞尾酒派對問題,在雞尾酒派對上,有DJ的音樂、有歡笑聲、有交談聲...等各種聲音,如果我在n個角落放上麥克風並且錄下這些聲音,有沒有辦法從這n比資料中分離出互相獨立的聲音源?
如同前面的PCA一樣是個轉換x = W*y
,y是我們想分離出來的聲音源,但是他經過某些轉換W導致我們錄到到聲音是x,W就被稱為mixing matrix。
我們希望找到一個unmixing matrix W'可以還原不同獨立的聲音源,y' = W'^T*x
。
這邊的方法不唯一,有很多不同實作的方法都有不同的效果。
在各自獨立的聲音源部份,你可以把聲音看成一個機率分佈的函數,每個聲音有他各自獨特的分佈函數,但是可惜的是我們無法處理常態分佈的聲音源,所以要假設每個資料的分佈都是非常態分佈的。
跟PCA不同的是,PCA計算中會去考慮variance,並將其分離出來。對機率分佈函數來說,variance只是他的一個特質而已,其實他可以由momentum generating function計算出來,不同的機率分佈函數就有不同的momentum generating function,不同的momentum generating function也可以還原成不同的機率分佈函數,你可以把他看成像識別證一樣。
期望值是機率分佈函數的一階moment,變異數的計算當中包含了二階的moment,其中三階moment跟機率分佈函數的skewness (偏態)有關,ICA會用到的是四階的moment,跟kurtosis (峰度)有關。
FastICA的演算法會用到的是最大化kurtosis,而常態分佈的kurtosis則是0,所以這樣常態分佈就會自動被排除。或是有另一個方向是利用Kullack-Leibler divergence來排除常態分佈。
接下來我就沒有深入了解了,所以先到這邊吧!